import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Esta clase representa al boton que permite al Usuario elegir el tipo de proyectil que usara.
 * 
 * @author Miguel Martinez Aguilar
 * @version 04 de abril de 2013
 */
public class Select_Armas extends Boton
{
    // Declaracion de variables de instancia
    private Armeria armeria;// es la armeria a la que hace referencia este boton.
    private boolean abajo;// es un boleano que indica si se ha desplegado el menu de armas.
    private boolean usado;// es un boleano que indica si este boton sera usado de forma directa.
    private GreenfootImage[] img2;// es un arreglo de imagenes que usara este boton.
    private Boton_arma[] boton;// es un arreglo de los botones que representaran a las armas de los jugadores.

    /**
     * Este es el metodo constructor del boton selector de proyectiles.
     * @param armeria: el objeto Armeria al que hara referencia este objeto.
     * @param usado: boleano que indica si este boton se usara de forma directa.
     */
    public Select_Armas(Armeria armeria, boolean usado)
    {
        super("abajo0.png","abajo1.png","abajo2.png");// normal, sobre, presionado.
        img2 = new GreenfootImage[6];
        img2[0] = new GreenfootImage("abajo0.png");
        img2[1] = new GreenfootImage("abajo1.png");
        img2[2] = new GreenfootImage("abajo2.png");
        img2[3] = new GreenfootImage("arriba0.png");
        img2[4] = new GreenfootImage("arriba1.png");
        img2[5] = new GreenfootImage("arriba2.png");
        this.armeria = armeria;
        abajo = false;
        this.usado = usado;
        boton = new Boton_arma[4];
        boton[0] = new Boton_arma(this,armeria,0,usado);
        boton[1] = new Boton_arma(this,armeria,1,usado);
        boton[2] = new Boton_arma(this,armeria,2,usado);
        boton[3] = new Boton_arma(this,armeria,3,usado);
    }
    
    /**
     * Este metodo desglosa o cierra los proyectiles a elegir por el usuario.
     */
    public void ejecuta()
    {
        if(usado){
            if(abajo){
                abajo = false;
                super.img[0] = img2[0];
                super.img[1] = img2[1];
                super.img[2] = img2[2];
                for(int i = 0; i < 4; i++)boton[i].activar(false);
            }
            else{
                abajo = true;
                super.img[0] = img2[3];
                super.img[1] = img2[4];
                super.img[2] = img2[5];
                for(int i = 0; i < 4; i++)boton[i].activar(true);
            }
            this.setImage(img[0]); 
        }
    }
    
    /**
     * Este metodo prepara y agrega los botones que representan a los proyectiles
     */
    public void prepara()
    {
        ScrollWorld mundo = super.getWorld();
        mundo.addObject(boton[0],armeria.getX(),armeria.getY() + 50);
        mundo.addObject(boton[1],armeria.getX(),boton[0].getY() + 46);
        mundo.addObject(boton[2],armeria.getX(),boton[1].getY() + 46);
        mundo.addObject(boton[3],armeria.getX(),boton[2].getY() + 46);
        for(int i = 0; i < 4; i++){
            boton[i].prepara();
            boton[i].activar(false);
        }
    }
    
    /**
     * Este metodo disminuye la cantidad de armas disponibles del boton de proyectiles seleccionado.
     * @param num: un numero que identifica al boton al que se le hara el decremento.
     */
    public void disminuir(int num)
    {
        boton[num].disminuir();
    }
    
    /**
     * Este metodo elige y autoriza el tipo de proyectil que usara el jugador.
     * @param num: un numero que identifica al boton al que se verificara.
     */
    public void autoriza(int num)
    {
        boton[num].verificacion();
    }
}
